//封装调试需要的宏，主要是assert和backTrace
#ifndef __DANIEL_MACRO_H__
#define __DANIEL_MACRO_H__
#include <execinfo.h>
#include <assert.h>
#include <string>
#include <iostream>
#define BT_BUF_SIZE 60

#define DANIEL_ASSERT(XX) \
{\
    if (!(XX)) daniel::bt();\
    assert((XX));\
}
#define DANIEL_ASSERT2(XX,YY) \
{\
    if (!(XX)) {std::cout<<YY<<std::endl;daniel::bt();}\
    assert((XX));\
}


namespace daniel
{
    //用于打印调用堆栈的信息
    void bt();
}


#endif